package drds.server.execute_engine.data_handling.tmp;

import java.util.List;

import drds.server.net.packet.RowDataPacket;

/**
 * 
 */
public interface Heap {

	/**
	 * 构建堆
	 */
	void buildHeap();

	/**
	 * 获取堆根节点
	 */
	RowDataPacket getRootRowDataPacket();

	/**
	 * 向堆添加元素
	 */
	void add(RowDataPacket rowDataPacket);

	/**
	 * 获取堆数据
	 * 
	 * @return
	 */
	List<RowDataPacket> getRowDataPacketList();

	/**
	 * 设置根节点元素
	 * 
	 * @param rootRowDataPacket
	 */
	void setRoot(RowDataPacket rootRowDataPacket);

	/**
	 * 向已满的堆添加元素
	 * 
	 * @param rowDataPacket
	 */
	boolean addIfRequired(RowDataPacket rowDataPacket);

	/**
	 * 堆排序
	 */
	void heapSort(int size);

}
